/**
 * 设备检测工具类
 * 用于检测当前设备类型，判断是手机还是平板，及屏幕方向
 */

// 平板设备的最小宽度阈值（单位：像素）
const TABLET_MIN_WIDTH = 768

/**
 * 检测当前设备是否为平板
 * @returns {boolean} 如果是平板设备返回true，否则返回false
 */
export function isTablet() {
  // 获取系统信息
  const systemInfo = uni.getSystemInfoSync()
  
  // 获取屏幕宽度（px）
  const screenWidth = systemInfo.screenWidth
  
  // 如果屏幕宽度大于等于平板阈值，判定为平板设备
  return screenWidth >= TABLET_MIN_WIDTH
}

/**
 * 检测当前设备是否处于横屏状态
 * @returns {boolean} 如果是横屏状态返回true，否则返回false
 */
export function isLandscape() {
  // 获取系统信息
  const systemInfo = uni.getSystemInfoSync()
  
  // 比较宽高，宽度大于高度即为横屏
  return systemInfo.screenWidth > systemInfo.screenHeight
}

/**
 * 根据设备类型自动路由到合适的页面
 * 平板设备或横屏状态下路由到平板布局，否则路由到普通手机布局
 */
export function routeBasedOnDevice() {
  // 判断是否应该使用平板布局
  const shouldUseTabletLayout = isTablet() || isLandscape()
  
  if (shouldUseTabletLayout) {
    // 平板布局页面路径
    const tabletPage = '/pages/tablet-layout/tablet-layout'
    
    // 获取当前页面路径
    const pages = getCurrentPages()
    const currentPage = pages[pages.length - 1]
    const currentPagePath = '/' + currentPage.route
    
    // 如果当前不是平板布局页面，则跳转
    if (currentPagePath !== tabletPage) {
      uni.reLaunch({
        url: tabletPage
      })
    }
  } else {
    // 当前在平板布局但设备状态改变，跳回手机布局
    const pages = getCurrentPages()
    const currentPage = pages[pages.length - 1]
    
    if (currentPage.route === 'pages/tablet-layout/tablet-layout') {
      uni.reLaunch({
        url: '/pages/milk-record/milk-record'
      })
    }
  }
}

/**
 * 监听屏幕方向变化，自动调整布局
 */
export function setupOrientationListener() {
  // #ifdef H5
  window.addEventListener('resize', () => {
    routeBasedOnDevice()
  })
  // #endif
  
  // #ifdef APP-PLUS
  plus.screen.addEventListener('orientationchange', () => {
    routeBasedOnDevice()
  })
  // #endif
} 